<?php 
/**
*file ArtModel.class.php
*文章类
*
*@auther houtizong
*@version 1.0
*/
defined('ACC') ||exit ('ACC Denied');

class ArtModel extends Model{
	protected $table = 'art'; //art表
	protected $pk = 'art_id'; //主键

    //表中的所有字段 跟$_POST过来的字段匹配
	protected $_field = array(
		'art_id','title','content','author','pubtime',
		'cat_id','user_id','nick','lastup','comm','tags','org_img','thumb_img' 
		);

	//自动填充
	protected $_auto = array(
            array('pubtime','function','time' )
		);
   //验证
   protected $_valid = array(
            array('title',1,'标题不能为空','require'),
            //array('title',1,'标题已经存在','repeat'),
            array('is_new',0,'in_new只能是0或1','in','0,1'),
            array('tags',2,'标签描述就在4到20字符','length','4,20')
       );
   
/**
*检查文章标题   不能重复
*@param string $title 标题
*return int 标题行数
*/
public function repeat($title){
	$sql = "select count(*) from ". $this->table . " where title='". $title ."'";
	return $this->db->getOne($sql);
}

/**
*检查栏目下是否存在文章  删除栏目时判断
*@param int $cat_id 栏目id
*return int 
*/
public function getArtCount($cat_id){
	$sql = "select count(*) from " . $this->table . " where cat_id ='". $cat_id ."'";
	return $this->db->getOne($sql);
}

/**
*查询文章列表中is_state=0（状态为已发布）的数据 
*利用left join 查询cat表中的（catname)列 cat_id关联
*FROM_UNIXTIME(pubtime) 转成YYYY-DD-MM HH：ii:ss格式
*
*（分页：添加偏移量）
*@param $offset 偏移量
*@param $limit  显示的行数
*@param select语句 
*return  array
*/
public function artList($offset=0,$limit=16){
	$sql = "select art_id,title,FROM_UNIXTIME(pubtime) as pubtime,catname,comm from " . $this->table .
	 " left join cat on art.cat_id=cat.cat_id where is_state=0 order by art_id desc limit ".$offset.",".$limit;
	return $this->db->getAll($sql);
}

/**
*查询文章状态is_state=0(已发布)的总条数  $total 分页用
*/
public function artTotal(){
	$sql = 'select count(*) from '.$this->table.' where is_state=0';
	return $this->db->getOne($sql);
}

/**
*查询文章列表中is_state=1（状态为已回收）的数据 
*利用left join 查询cat表中的（catname)列 cat_id关联
*FROM_UNIXTIME(pubtime) 转成YYYY-DD-MM HH：ii:ss格式
*@param select语句
*（分页：添加偏移量）
*@param $offset 偏移量
*@param $limit  显示的行数
*return  bool
*/
public function artRecycle($offset=0,$limit=10){
	$sql = "select art_id,title,FROM_UNIXTIME(pubtime) as pubtime,catname,comm from " . $this->table .
	 " left join cat on art.cat_id=cat.cat_id where is_state=1 limit ".$offset.",".$limit;
	return $this->db->getAll($sql);
}
/**
*查询文章状态is_state=0(未发布在回收站)的总条数  $total 分页用
*/
public function artTotal_No(){
	$sql = 'select count(*) from '.$this->table.' where is_state=1';
	return $this->db->getOne($sql);
}

/**
*把文章移动到回收站（逻辑删除 update  is_state=>1）
*@param array(is_state=>1)
*@param int $id  主键
*return bool
*/
public function moveRecycle($id){
	return $this->update(array('is_state'=>1),$id);
}

/**
*把回收站的文章恢复 （update  is_state=0）
*@param array('is_state'=>0)
*@param int $id 
*return bool
*/
public function recovery($id){
	return $this->update(array('is_state'=>0),$id);
}

/**
*artdit.php 中默认值查询显示
*@param int $id 主键 select语句
*reutn bool
*/
public function artValues($id){
	$sql = 'select title,cat_id,content,tags,org_img,thumb_img from '.$this->table.' where art_id='.$id;
	return $this->db->getAll($sql);
}

/**
*最新发布的5篇文章查询 （首页显示）
*@param int $id
*return bool
*/
public function artNew(){
	$sql = 'select art_id,title,FROM_UNIXTIME(pubtime),comm from '.$this->table.' where is_state=0 order by pubtime desc limit 5';
	return $this->db->getAll($sql);
}
/**
*查询单个文章信息 首页根据art_id取
*@param int $id
*return bool
*/
public function artOne($id){
	$sql = 'select title,author,catname,content,FROM_UNIXTIME(pubtime) as pubtime,comm,org_img,thumb_img from '.$this->table.' inner join cat on art.cat_id=cat.cat_id where art_id='.$id;
	return $this->db->getRow($sql);
}

/**
*文章下每评论成功一次 comm+1 避免使用count得结果
*@param int $id 主键
*@param int $comm  根据art_id取出comm列的值
*return bool
*/
public function commPlus($id){
	//$sql = 'update '.$this->table.' set comm=comm+1'.' where art_id='.$id;
	$sql = 'select comm from '.$this->table.' where art_id='.$id;
	$comm = $this->db->getOne($sql);
	return $this->update(array('comm'=>$comm+1),$id);
}
/**
*文章下每评论删除一次 comm-1 避免使用count得结果
*@param int $id 主键
*@param int $comm  根据art_id取出comm列的值
*return bool
*/
public function commReduce($id){
	$sql = 'select comm from '.$this->table.' where art_id='.$id;
	$comm = $this->db->getOne($sql);
	return $this->update(array('comm'=>$comm-1),$id);
}

/**
*查询5条最新浏览的历史记录 根据自定义函数 History()返回值
*@param string $his
*return bool
*/
public function getHistory($his){
    $in = array();                 //存放art_id
    if (!empty($his)) {            //浏览记录不为空的情况
       foreach ($his as $v) {      //遍历uri
          $sub = explode('=', $v); //用=号分割uri中的art_id
          if (isset($sub[1])) {
          	$in[] = $sub[1];       //把art_id 放入数组
          }      
        } 
    }  
    $in = implode(',', $in);     //把数组用逗号分割 能用in型代入sql
   //print_r($in);
   //拼接sql
   $sql = 'select title,author,catname,content,FROM_UNIXTIME(pubtime) as pubtime,comm,org_img,thumb_img from '.$this->table.' inner join cat on art.cat_id=cat.cat_id where art_id in (' . $in . ') order by pubtime limit 5';
   return $this->db->getAll($sql);
   //return $in;
  } 












}
?>